WRAP_CLASS("itk::DiscreteGaussianImageFilter")

  WRAP_IMAGE_FILTER_USIGN_INT(2)
  WRAP_IMAGE_FILTER_SIGN_INT(2)
  WRAP_IMAGE_FILTER_REAL(2)

  BEGIN_MANAGED_PROPERTY("Variance" GETSET)
    SET(MANAGED_PROPERTY_SUMMARY   "Get/set the Variance for the discrete Gaussian kernel for each dimension. The default is 0.0 in each dimension. If UseImageSpacing is true, the units are the physical units of the image. If UseImageSpacing is false then the units are pixels.")
    SET(MANAGED_PROPERTY_TYPE      "array<double>^")
    SET(MANAGED_PROPERTY_GET_BODY  "return itk::ManagedTypes::ToManagedFixedArray<double, NativeType::ImageDimension>( m_PointerToNative->GetVariance() );")
    SET(MANAGED_PROPERTY_SET_BODY  "m_PointerToNative->SetVariance( itk::ManagedTypes::ToNativeFixedArray<double, NativeType::ImageDimension>(value) );")
  END_MANAGED_PROPERTY()

  BEGIN_MANAGED_METHOD("SetVariance")
    SET(MANAGED_METHOD_SUMMARY         "Convenient method for setting the Variance parameter for all dimensional parameters to the same value.")
    SET(MANAGED_METHOD_RETURN_TYPE     "void")
    SET(MANAGED_METHOD_PARAMS          "double variance")
    SET(MANAGED_METHOD_TYPE_BODY       "m_PointerToNative->SetVariance( variance );")
    SET(MANAGED_METHOD_WRAPPER_BODY    "iInstance->SetVariance( variance );")
  END_MANAGED_METHOD()
  
  BEGIN_MANAGED_PROPERTY("MaximumError" GETSET)
    SET(MANAGED_PROPERTY_SUMMARY   "Get/set the MaximumError paramter. The algorithm will size the discrete kernel so that the error resulting from truncation of the kernel is no greater than MaximumError. The default is 0.01 in each dimension.")
    SET(MANAGED_PROPERTY_TYPE      "array<double>^")
    SET(MANAGED_PROPERTY_GET_BODY  "return itk::ManagedTypes::ToManagedFixedArray<double, NativeType::ImageDimension>( m_PointerToNative->GetMaximumError() );")
    SET(MANAGED_PROPERTY_SET_BODY  "m_PointerToNative->SetMaximumError( itk::ManagedTypes::ToNativeFixedArray<double, NativeType::ImageDimension>(value) );")
  END_MANAGED_PROPERTY()
  
  BEGIN_MANAGED_METHOD("SetMaximumError")
    SET(MANAGED_METHOD_SUMMARY         "Convenient method for setting the MaximumError parameter for all dimensional parameters to the same value.")
    SET(MANAGED_METHOD_RETURN_TYPE     "void")
    SET(MANAGED_METHOD_PARAMS          "double maxerror")
    SET(MANAGED_METHOD_TYPE_BODY       "m_PointerToNative->SetMaximumError( maxerror );")
    SET(MANAGED_METHOD_WRAPPER_BODY    "iInstance->SetMaximumError( maxerror );")
  END_MANAGED_METHOD()
  
  BEGIN_MANAGED_PROPERTY("MaximumKernelWidth" GETSET)
    SET(MANAGED_PROPERTY_SUMMARY   "Get/set the kernel to be no wider than MaximumKernelWidth pixels, even if MaximumError demands it. The default is 32 pixels.")
    SET(MANAGED_PROPERTY_TYPE      "unsigned int")
    SET(MANAGED_PROPERTY_GET_BODY  "return m_PointerToNative->GetMaximumKernelWidth();")
    SET(MANAGED_PROPERTY_SET_BODY  "m_PointerToNative->SetMaximumKernelWidth( value );")
  END_MANAGED_PROPERTY()
  
  BEGIN_MANAGED_PROPERTY("FilterDimensionality" GETSET)
    SET(MANAGED_PROPERTY_SUMMARY   "Get/set the number of dimensions to smooth. Defaults to the image dimension. Can be set to less than ImageDimension, smoothing all the dimensions less than FilterDimensionality. For instance, to smooth the slices of a volume without smoothing in Z, set the FilterDimensionality to 2.")
    SET(MANAGED_PROPERTY_TYPE      "unsigned int")
    SET(MANAGED_PROPERTY_GET_BODY  "return m_PointerToNative->GetMaximumKernelWidth();")
    SET(MANAGED_PROPERTY_SET_BODY  "m_PointerToNative->SetMaximumKernelWidth( value );")
  END_MANAGED_PROPERTY()
  
  BEGIN_MANAGED_PROPERTY("UseImageSpacing" GETSET)
    SET(MANAGED_PROPERTY_SUMMARY   "Get/set if image spacing should be used by the filter.")
    SET(MANAGED_PROPERTY_TYPE      "bool")
    SET(MANAGED_PROPERTY_GET_BODY  "return m_PointerToNative->GetUseImageSpacing();")
    SET(MANAGED_PROPERTY_SET_BODY  "m_PointerToNative->SetUseImageSpacing(value);")
  END_MANAGED_PROPERTY()

END_WRAP_CLASS()
